package ynu.edu.service;

import ynu.edu.dto.PaymentDTO;
import ynu.edu.dto.PaymentRequest;

import java.util.List;

/**
 * 支付服务接口
 */
public interface PaymentService {
    
    /**
     * 创建支付订单
     *
     * @param request 支付请求
     * @return 支付信息
     */
    PaymentDTO createPayment(PaymentRequest request);
    
    /**
     * 处理支付
     *
     * @param paymentId 支付ID
     * @param transactionId 交易号
     * @return 支付信息
     */
    PaymentDTO processPayment(Integer paymentId, String transactionId);
    
    /**
     * 取消支付
     *
     * @param paymentId 支付ID
     * @return 支付信息
     */
    PaymentDTO cancelPayment(Integer paymentId);
    
    /**
     * 查询支付信息
     *
     * @param paymentId 支付ID
     * @return 支付信息
     */
    PaymentDTO getPayment(Integer paymentId);
    
    /**
     * 支付成功
     *
     * @param paymentId 支付ID
     * @return 支付信息
     */
    PaymentDTO paySuccess(Integer paymentId);
    
    /**
     * 根据订单ID查询支付信息
     *
     * @param orderId 订单ID
     * @return 支付信息
     */
    PaymentDTO getPaymentByOrderId(Integer orderId);
    
    /**
     * 查询用户支付记录
     *
     * @param userId 用户ID
     * @return 支付记录列表
     */
    List<PaymentDTO> getUserPayments(String userId);
    
    /**
     * 根据支付状态查询用户支付记录
     *
     * @param userId 用户ID
     * @param status 支付状态
     * @return 支付记录列表
     */
    List<PaymentDTO> getUserPaymentsByStatus(String userId, Integer status);
} 